package com.blockchain.console.service.system;

import com.blockchain.console.service.system.entity.Bank;
import com.blockchain.framework.service.Service;
import com.blockchain.framework.service.query.Paging;
import com.blockchain.framework.service.query.PagingResult;
/**
 *银行管理 
 *
 */
public abstract interface BankManage extends Service{
	
	/**
	 * <dt>
	 * <dl>
	 * 描述：增加银行信息
	 * </dl>
	 * 
	 * <dl>
	 * 数据校验：
	 * <ol>
	 * <li>如果{@code name }为空  或则{@code name }的长度大于30  则抛出参数异常 银行名称不能为空且长度不能大于30</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>
	 * 逻辑校验：
	 * <ol>
	 * <li>无</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>
	 * 业务处理：
	 * <ol>
	 * <li>新增{@code T6052}表   
	 * <li>
	 * 新增字段列表:
	 * <ol>
	 * <li>{@code name}对应{@code T6052.F02}</li>
	 * </ol>
	 * </li>
	 * </ol>
	 * </dl>
	 * </dt>
	 * 
	 * @param name 银行名称
	 * @throws Throwable
	 */
	public abstract void addBank(String name) throws Throwable;
	
	/**
	 * <dt>
	 * <dl>
	 * 描述：根据id修改银行名称.
	 * </dl>
	 * 
	 * <dl>
	 * 数据校验：
	 * <ol>
	 * <li>如果{code id<=0 }  则直接返回</li>
	 * <li>如果{@code name }为空  或则{@code name }的长度大于30  则抛出参数异常 银行名称不能为空且长度不能大于30</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>
	 * 逻辑校验：
	 * <ol>
	 * <li>无</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>
	 * 业务处理：
	 * <ol>
	 * <li>修改{@link T6052}表   修改条件：{@code T6052.F01 = id}<li>
	 * 修改字段列表:
	 * <ol>
	 * <li>{@code name}对应{@code T6052.F02}</li>
	 * </ol>
	 * </li>
	 * </ol>
	 * </dl>
	 * </dt>
	 * 
	 * @param id 银行ID
	 * @param name 银行名称
	 * @throws Throwable
	 */
	public abstract void updateBank(int id,String name) throws Throwable;
	
	/**
	 * <dt>
	 * <dl>
	 * 描述：分页查询银行列表
	 * </dl>
	 * 
	 * <dl>
	 * 数据校验：
	 * <ol>
	 * <li>无</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>
	 * 逻辑校验：
	 * <ol>
	 * <li>无</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>
	 * 业务处理：
	 * <ol>
	 * <li>查询{@link T6052}表     查询条件:如果{@code name}不为空的时 则{@code T6052.F02 LIKE name} </li>
	 * <li>按照{@code T6052.F01}字段降序排序</li>
	 * </ol>
	 * <li>
	 * 查询字段列表:
	 * <ol>
	 * <li>{@link Bank#id}对应{@code T6052.F01}</li>
	 * <li>{@link Bank#name}对应{@code T6052.F02}</li>
	 * <li>
	 * </li>
	 * </ol>
	 * </li>
	 * </ol>
	 * </dl>
	 * </dt>			
	 * 
	 * 
	 * @param name 银行名称
	 * @param paging 分页参数
	 * @return {@link PagingResult}{@code <}{@link Bank}{@code >} 分页查询结果,没有结果则返回{@code null}
	 * @throws Throwable
	 */
	public abstract PagingResult<Bank> searchBank(String name,Paging paging) throws Throwable;
	
	/**
	 * <dt>
	 * <dl>
	 * 描述：根据银行id得到指定银行
	 * </dl>
	 * 
	 * <dl>
	 * 数据校验：
	 * <ol>
	 * <li>无</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>
	 * 逻辑校验：
	 * <ol>
	 * <li>无</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>  
	 * 业务处理：
	 * <ol>
	 * <li>查询{@link T6052}表  查询条件:{@code T6052.F01 = id}</li>
	 * <li>
	 * 
	 * <li>
	 * 查询字段列表:
	 * <ol>
	 * <li>{@link Bank#id}对应{@code T6052.F01}</li>
	 * <li>{@link Bank#name}对应{@code T6052.F02}</li>
	 * <li>
	 * </li>
	 * </ol>
	 * </dl>
	 * </dt>
	 * 
	 * @param id 银行id
	 * @return {@link Bank} 银行信息 不存在则返回 {@code null}
	 * @throws Throwable
	 */
	public abstract Bank get(int id) throws Throwable;
	/**
	 * <dt>
	 * <dl>
	 * 描述：判断银行名称是否存在
	 * </dl>
	 * 
	 * <dl>
	 * 数据校验：
	 * <ol>
	 * <li>无</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>
	 * 逻辑校验：
	 * <ol>
	 * <li>无</li>
	 * </ol>
	 * </dl>
	 * 
	 * <dl>  
	 * 业务处理：
	 * <ol>
	 * <li>查询{@link T6052}表  查询条件:{@code T6052.F02 = name} 存在则返回{@code true} 不存在则返回{@code false}</li>
	 * 
	 * </dl>
	 * </dt>
	 * 
	 * @param name 银行名称
	 * @return {@code boolean} 存在则返回{@code true} 不存在则返回{@code false} 
	 * @throws Throwable 
	 */
	public boolean isBankName(String name) throws Throwable;
}
